package reflect;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class ReflectDemo6 {
    public static void main(String[] args) throws Exception {
        Class cls=Class.forName("reflect.Person");
        Object o = cls.newInstance();
        Method method = cls.getMethod("say", String.class, int.class);
        method.invoke(o,"大家好",5);

        //获取方法名
        String name = method.getName();
        System.out.println(name);
        //获取方法的修饰符
        int modifiers = method.getModifiers();

        //可读性好
        switch (modifiers){
            case Modifier.PUBLIC:
                System.out.println("这是一个公开方法");
                break;
            case Modifier.PRIVATE:
                System.out.println("这是一个私有方法");
                break;
            case Modifier.PROTECTED:
                System.out.println("这是一个受保护的方法");
                break;
        }
        //返回方法的参数
        Class<?>[] parameterTypes = method.getParameterTypes();
        for (int i=0;i<parameterTypes.length;i++){
            System.out.println(parameterTypes[i].getCanonicalName());
        }
        //返回方法的数量
        int parameterCount = method.getParameterCount();
        System.out.println(method.getName()+"方法有"+parameterCount+"个"+"他的的类型为："+parameterTypes);

    }



}
